package cn.microservices.cloud.gateway.util;

/**
 * 存放常量。
 */
public class Constant {

	//<editor-fold desc="/*基本常量*/">

	/**
	 * 工程目录的路径，包含最后的斜杠。如"C:\Tomcat\webapp\test\"。
	 */
	public static String PATH = null;

	/**
	 * 工程名，以斜杠开头，如"/test"。特殊的，如果项目为ROOT文件夹，该变量的值为空字符串，即""。
	 */
	public static String CTX = null;

	/**
	 * 默认的上传文件的文件夹名。包含最后的斜杠。
	 */
	public final static String UPLOAD_PATH = "upload/";

	/**
	 * 默认的导出文件的文件夹名。包含最后的斜杠。
	 */
	public final static String EXPORT_PATH = "export/";

	/**
	 * 缩略图文件夹名字
	 */
	public static final String THUMBNAIL_FOLDER_NAME = "__thumbnail__";

	/**
	 * 每页可以显示的信息条数，一页默认显示10条数据。
	 */
	public final static int PAGE_SIZE = 10;

	/**
	 * 当前的页码数，默认第一页。
	 */
	public final static int PAGE_INDEX = 1;

	/**
	 * 每页可以显示的信息条数的列表，页面中通过选择可以改变每页显示的条数。
	 */
	public final static int[] PAGE_SIZE_LIST = {10, 25, 50, 75, 100};

	/**
	 * 默认的导出的最大条数。
	 */
	public final static int PAGE_EXPORT_MAX_RESULTS = 5000;

	/**
	 * 国际化资源文件的基本名称。
	 */
	public final static String I18N_BASE_NAME = "i18n.metagross-message";

	/**
	 * MD5加密时的公盐
	 */
	public static final String PUBLIC_SALT = "metagross-framework";

	/**
	 * session、redis中的所有key的前缀
	 */
	public static final String KEY_PREFIX = "metagross_";

	/**
	 * 临时上传文件的目录
	 */
	public static final String UPLOAD_PATH_TEMP = "/temp";
	//</editor-fold>

	//<editor-fold desc="/*session中的key值*/">

	/**
	 * 当前登录用户的用户名在Session中的key值。
	 */
	public final static String SESSION_KEY_USERNAME = KEY_PREFIX + "username";

	/**
	 * 当前登录用户的id在Session中的key值。
	 */
	public final static String SESSION_KEY_SUBJECT_ID = KEY_PREFIX + "subject_id";

	/**
	 * 当前登录用户的真实姓名在Session中的key值。
	 */
	public final static String SESSION_KEY_REALNAME = KEY_PREFIX + "realname";

	/**
	 * 当前登录用户的部门id在Session中的key值。
	 */
	public final static String SESSION_KEY_DEPARTMENT_ID = KEY_PREFIX + "department_id";

	/**
	 * 当前登录用户的部门名称在Session中的key值。
	 */
	public final static String SESSION_KEY_DEPARTMENT_NAME = KEY_PREFIX + "department_name";

	/**
	 * 当前登录用户的类型在Session中的key值。
	 */
	public final static String SESSION_KEY_SUBJECT_CLASS = KEY_PREFIX + "subject_class";

	/**
	 * 当前登录用户对应的realm的类型在Session中的key值。
	 */
	public final static String SESSION_KEY_SUBJECT_REALM_CLASS = KEY_PREFIX + "subject_realm_class";

	/**
	 * 验证码在session中保存的key值。
	 */
	public static final String SESSION_KEY_VERIFICATIONCODE = KEY_PREFIX + "verificationcode";
	//</editor-fold>

	//<editor-fold desc="/*cookie中的key值*/">
	//</editor-fold>

	//<editor-fold desc="/*redis中的key值*/">

	/**
	 * 数据字典的可用项在redis中的key，前缀
	 */
	public static final String REDIS_KEY_DATA_DICTIONARY_AVAILABLE_PREFIX = KEY_PREFIX + "data_dictionary_available:";

	/**
	 * 数据字典的全部项在redis中的key，前缀
	 */
	public static final String REDIS_KEY_DATA_DICTIONARY_FULL_PREFIX = KEY_PREFIX + "data_dictionary_full:";

	/**
	 * MQ在redis中保存的key值
	 */
	public static final String REDIS_KEY_MESSAGE_QUEUE = KEY_PREFIX + "message_queue";

	/**
	 * 菜单在redis中缓存的key值
	 */
	public static final String REDIS_KEY_SHIRO_AUTHORIZATION_MENU = KEY_PREFIX + "shiro_authorization_menu";

	/**
	 * Shiro在redis中缓存的权限信息的key值，缓存的是permission信息，用于RequiresPermissions标签校验时使用
	 * 这个值配置在所有的realm bean的authorizationCacheName属性中
	 */
	public static final String REDIS_KEY_SHIRO_AUTHORIZATION_PERMISSION = KEY_PREFIX + "shiro_authorization_permission";

	/**
	 * ConfigFactory在redis中的key值
	 */
	public static final String REDIS_KEY_CONFIG_CACHE = KEY_PREFIX + "config_cache";

	/**
	 * EntityCache在redis中的key，前缀
	 */
	public static final String REDIS_KEY_ENTITY_CACHE_VALUE_PREFIX = KEY_PREFIX + "entity_cache_value:";

	/**
	 * EntityCache在redis中的key，前缀
	 */
	public static final String REDIS_KEY_ENTITY_CACHE_LAST_UPDATE_TIME_PREFIX = KEY_PREFIX + "entity_cache_last_update_time:";

	/**
	 * 用户登录时密码输入错误的次数，前缀
	 */
	public static final String REDIS_KEY_LOGIN_PASSWORD_ERROR_TIMES_PREFIX = KEY_PREFIX + "login_password_error_times:";

	/**
	 * Job运行时日志，前缀
	 */
	public static final String REDIS_KEY_JOB_RUNNING_LOG_PREFIX = KEY_PREFIX + "job_running_log:";

	/**
	 * Job运行结果日志，前缀
	 */
	public static final String REDIS_KEY_JOB_RESULT_LOG_PREFIX = KEY_PREFIX + "job_result_log:";

	/**
	 * Token，前缀
	 */
	public static final String REDIS_KEY_TOKEN_PREFIX = KEY_PREFIX + "token:";

	/**
	 * Token列表，前缀
	 */
	public static final String REDIS_KEY_TOKEN_LIST_PREFIX = KEY_PREFIX + "token_list:";

	/**
	 * AccessLimitInterceptor存放于Redis中的key，前缀
	 */
	public static final String REDIS_KEY_ACCESS_LIMIT_PREFIX = KEY_PREFIX + "access_limit:";
	//</editor-fold>

	//<editor-fold desc="/*配置项的名称*/">

	/**
	 * 项目标识符
	 */
	public static final String CONFIG_PROJECT_NAME = "project.name";

	/**
	 * 上传文件的根路径
	 */
	public static final String CONFIG_PROJECT_UPLOAD_ROOT_PATH = "project.uploadRootPath";

	/**
	 * 工程所在的路径，即开发路径，不是部署后的路径，用于代码生成
	 */
	public static final String CONFIG_PROJECT_PATH = "project.path";

	/**
	 * debug mode
	 */
	public static final String CONFIG_DEBUG_MODE = "debugMode";

	/**
	 * Openfire IP
	 */
	public static final String CONFIG_OPENFIRE_IP = "openfire.ip";

	/**
	 * Openfire Port
	 */
	public static final String CONFIG_OPENFIRE_PORT = "openfire.port";

	/**
	 * Openfire Service Name
	 */
	public static final String CONFIG_OPENFIRE_SERVICE_NAME = "openfire.serviceName";

	/**
	 * email address
	 */
	public static final String CONFIG_EMAIL_ADDRESS = "email.address";

	/**
	 * email password
	 */
	public static final String CONFIG_EMAIL_PASSWORD = "email.password";

	/**
	 * email smtp
	 */
	public static final String CONFIG_EMAIL_SMTP = "email.smtp";

	/**
	 * solr url
	 */
	public static final String CONFIG_SOLR_URL = "solr.url";

	/**
	 * skin
	 */
	public static final String CONFIG_SKIN = "skin";
	//</editor-fold>

}
